/**
 * 判断日期格式yyyy-MM-dd
 * @param {} dateString
 * @return {Boolean}
 */
function isDate(dateString)   {
	if(typeof(dateString) == "undefined" || !jQuery.trim(dateString)){
		return true;
	}
	var reg = /^(\d{4})-(\d{2})-(\d{2})$/;     
	var str = dateString;     
	var arr = reg.exec(str);     
	if (!reg.test(str)){
		return false;
	}
		return true;
} 

/**
 * 检验日期时间格式
 * @param {} dateTimeString
 * @return {Boolean}
 */
function isDateTime(dateTimeString)   {
	if(typeof(dateTimeString) == "undefined" || !jQuery.trim(dateTimeString)){
		return true;
	}
	var reg = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/;     
	var str = dateTimeString;     
	var arr = reg.exec(str);     
	if (!reg.test(str)){
		return false;
	}
		return true;
}

$.fn.serializeObject = function(){    
        var o = {};    
        var a = this.serializeArray();  
        $.each(a, function() {    
            if (o[this.name]) {    
                if (!o[this.name].push) {    
                    o[this.name] = [ o[this.name] ];    
                }    
                o[this.name].push(jQuery.trim(this.value) || '');    
            } else {    
                o[this.name] = jQuery.trim(this.value) || '';    
            }    
        });    
        return o;    
	};
	
/**
非输入状态下屏蔽退格键
*/
$(document).keydown(function(){
 	if(!chkkey(arguments[0])){
 		return false;
 	}
});
function chkkey(e){
	var srcType ;
	var isReadOnly = "";
	if(e.srcElement){//IE
		srcType = e.srcElement.type;
		if(e.srcElement.attributes.readOnly){
			var isReadOnly =e.srcElement.attributes.readOnly.value;
		}
	}else if(e.target){//Firefox
		srcType = e.target.type;
	}
	var isShielding = false;
	if(srcType != "text" && srcType != "textarea" && srcType != "password"){
		isShielding = true;		
	}
	if(isReadOnly == "true"){
		isShielding = true;
	}
	if(isShielding){
		var keynum;
        if(window.event){//IE
			keynum = e.keyCode;
		}else if(e.which){// Netscape/Firefox/Opera
			keynum = e.which;
		}
		if(keynum == 8){
			return false;
		}
	}
	return true;
}

/**
 * 在父窗口创建隐藏标签
 * @param {} domId
 */
function createParentHiddenDom(domId){
	var parentWindow;
	if(window.opener){
		parentWindow = window.opener;
	}else{
		parentWindow = window.parent;
	}
	if($(parentWindow.document.body).find("#"+domId).length == 0){
		$(parentWindow.document.body).append("<input type='hidden' id='"+domId+"' />");
	}
}
/**
 * 替换页面特殊字符加上/
 * @param v
 */
function valueReplace(v){
	v=v.toString().replace(new RegExp('(["\"])', 'g'),"\\\"");
	return v; 
}

/**
 * 扩展Date对象，用于格式化时间
 */
Date.prototype.format = function(format) {
	var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),"S":this.getMilliseconds()};
	if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	for (var k in o) if (new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
	return format;
}

/**
 * 时间比较: 如果para1时间比para2时间小，则返回true
 */
function compareDate(para1, para2) {    
    return Date.parse(para1.replace(/-/g, "/")) < Date.parse(para2.replace(/-/g, "/"));
}

/**
 * 保存缓存数据
 * 
 * @param key 
 * 			----> 数据的标识
 * @param val
 * 			----> 数据对象
 */
function saveCacheData(key, val) {
	$("#datagridWrapId").data(key.toString(), val);
}

/**
 * 获取缓存数据
 * 
 * @param key 
 * 			----> 数据的标识，若此参数为空，则返回所有已缓存的对象
 */
function getCacheData(key) {	
	if (key)
		return $("#datagridWrapId").data(key.toString());
	else
		return $("#datagridWrapId").data();
}

/**
 * 清除缓存数据
 * 
 * @param key 
 * 			----> 数据的标识，若此参数为空，则删除所有缓存对象
 */
function clearCacheData(key) {
	if (key)
		$("#datagridWrapId").removeData(key.toString());
	else
		$("#datagridWrapId").removeData();
}

/**
 * 转义特殊字符
 * 
 * @param text 
 * 			----> 待转义的文本
 */
function escapeSpecialCharacters(text) {
    if (text && text.length > 0) {
        var regxBegin = /\<\s*(\w+)(\/{0,})\s*\>/g;
        var regxEnd = /\<\s*(\/{1,})(\w+)(\/{0,})\s*\>/g;
        // text = text.replace(regxBegin, space? "$1" : "&lt;$1$2&gt;");
        // text = text.replace(regxEnd, space? "$2" : "&lt;$1$2$3&gt;");
        // text = text.replace(/\&+\w*/g, "");
        
        text = text.replace(/[\&\<\>]/g, "");
    }
    return text;
}

/**
 * 格式化数字为金额形式
 *
 * @param s 
 *			----> 需要格式化的数字
 * @param n 
 *			----> 精度(保留几位数字)
 * @return string
 */
function converMoney(s, n) {   
   n = n > 0 && n <= 20 ? n : 2;   
   s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";   
   var l = s.split(".")[0].split("").reverse(),   
   r = s.split(".")[1];   
   t = "";   
   for(i = 0; i < l.length; i ++ )   
   {   
      t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");   
   }   
   return t.split("").reverse().join("") + "." + r;   
} 

/**
 * 还原被格式化的金额数字
 *
 * @param s 
 *			----> 已被格式化的数字
 * @return float
 */
function revertMoney(s) {   
   return parseFloat(s.replace(/[^\d\.-]/g, ""));   
} 

/**
 * 设置时间控件的时分秒是否可编辑
 * 
 * @param flag
 * 				----> 是否可以编辑
 */
function editableTime(flag) {
	var timeSpinner = $(".spinner .spinner-text");
	switch (flag) {
	case true:
	    timeSpinner.removeAttr("readonly");
	    break;
	case false:
	    timeSpinner.attr("readonly", true);
	}
}

/**
 * 更改EasyUI DateTimeBox控件的转换器
 * 
 * @param identifier
 * 				----> 元素标识
 */
function changeDateTimeBoxParser(identifier, op) {
	$(identifier).datetimebox({  
		parser: function(s) {
			var t = Date.parse(s.replace(/-/g, "/"));
			if (!isNaN(t)){
				return new Date(t);
			} else {
				var d = new Date();
				d.setMinutes(0, 0);						
				return d;
			}
		}
	}); 
}

/**
 * 更改Datagird的单元格提示信息
 * 
 * @param cssFlg
 * 				 ----> CSS标识
 */
function changeTipInfo(cssFlg) {
	$("." + cssFlg).each(function(i, obj) {
		obj = $(obj);
		obj.parent().attr("title", obj.text());
	});
}

/**
 * 反选Datagird记录行
 * 
 * @param obj
 * 			  ----> Datagird对象
 */
function uncheckAll(gridObj) {
	if (true == $(gridObj).datagrid('options').checkbox) {
		$(".datagrid-header-check").find("input:checked").each(function(i, obj) {			
			$(obj).attr("checked", false);
			$(gridObj).datagrid('unselectAll');
		});
	}
}

/**
 * 自动调整弹窗位置
 * 
 * @param id
 * 			 ----> 窗口ID
 * @param y
 * 			----> 预设位置
 */
function adjustFitPosition(id, y) {			
	y = y ? y : 10;
	return $(window).height() >= ($('#' + id).height() + y) ? y : 0;
}

/**
 * 将消息写入到空白页
 * 
 * @param msg
 * 			----> 要写入的消息（内容）
 */
function writeMsgToBlank(msg) {
	
	var newWin = window.open('about:blank', "_blank", '');
	newWin.document.open('text/html; charset=UTF-8', 'replace');
	newWin.opener = null;
	newWin.document.write(msg);
	newWin.document.close();
}
